﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.ComponentModel;

namespace SignalLab.BaseLibrary
{
  public abstract class RealtimePropertyBase: INotifyPropertyChanged 
  {
    public virtual string Name { get; protected set; }
    public abstract object RealtimeValue { get; }
    public virtual string FormattedValue
    {
      get
      {
        return Convert.ToString(RealtimeValue);
      }
    }

    public RealtimePropertyBase(string name)
    {
      Name = name;
    }

    #region INotifyPropertyChanged members

    protected void RaisePropertyChanged(string propertyName)
    {
      if (PropertyChanged != null)
        PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }

    public event PropertyChangedEventHandler PropertyChanged;

    #endregion
  }
}
